package com.jeeplus.test.jlnu.archivalBatch.util;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtils {

    // 默认日期格式
    private static final String DEFAULT_DATE_FORMAT = "yyyyMMdd";
    private static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
    private static final String DEFAULT_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    private static final String YYYY_MM_DD = "yyyy-MM-dd";

    /**
     * 获取当前日期（默认格式：yyyy-MM-dd）
     *
     * @return 当前日期字符串
     */
    public static String getCurrentDate() {
        return formatDate(new Date(), DEFAULT_DATE_FORMAT);
    }
    /**
     * 获取当前日期（默认格式：yyyy-MM-dd）
     *
     * @return 当前日期字符串
     */
    public static String getCurrentDates() {
        return formatDate(new Date(), YYYY_MM_DD);
    }

    /**
     * 获取当前时间（默认格式：HH:mm:ss）
     *
     * @return 当前时间字符串
     */
    public static String getCurrentTime() {
        return formatDate(new Date(), DEFAULT_TIME_FORMAT);
    }

    /**
     * 获取当前日期和时间（默认格式：yyyy-MM-dd HH:mm:ss）
     *
     * @return 当前日期和时间字符串
     */
    public static String getCurrentDateTime() {
        return formatDate(new Date(), DEFAULT_DATETIME_FORMAT);
    }

    /**
     * 获取当前日期和时间（自定义格式）
     *
     * @param pattern 日期格式（例如：yyyy-MM-dd HH:mm:ss）
     * @return 当前日期和时间字符串
     */
    public static String getCurrentDateTime(String pattern) {
        return formatDate(new Date(), pattern);
    }

    /**
     * 格式化日期
     *
     * @param date    日期对象
     * @param pattern 日期格式
     * @return 格式化后的日期字符串
     */
    public static String formatDate(Date date, String pattern) {
        if (date == null || pattern == null || pattern.isEmpty()) {
            throw new IllegalArgumentException("Date and pattern cannot be null or empty");
        }
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.format(date);
    }

    /**
     * 解析日期字符串为 Date 对象
     *
     * @param dateStr 日期字符串
     * @param pattern 日期格式
     * @return 解析后的 Date 对象
     * @throws Exception 如果解析失败
     */
    public static Date parseDate(String dateStr, String pattern) throws Exception {
        if (dateStr == null || pattern == null || pattern.isEmpty()) {
            throw new IllegalArgumentException("Date string and pattern cannot be null or empty");
        }
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.parse(dateStr);
    }

    public static void main(String[] args) {
        System.out.println(getCurrentDate());
    }
}
